<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let arr = [
            {
                id: 1,
                name: '1.小明'
            },
            {
                id: 2,
                name: '1.01.小红'
            },
            {
                id: 3,
                name: '1.04.小黑'
            },
            {
                id: 4,
                name: '2.小白'
            },
            {
                id: 5,
                name: '1.09.小蓝'
            },
            {
                id: 6,
                name: '2.06.小紫'
            },
        ]
        // let numArr = [] // 放数字部分
        // let textArr = [] // 放文字部分
        // let resultArr = []
        // for (let i = 0; i < arr.length; i++) {
        //     numArr.push(parseFloat(arr[i].name))
        //     textArr.push(arr[i].name.substring(arr[i].name.length - 3, arr[i].name.length))
        // }
        // console.log(textArr);
        // 冒泡排序 
        // 基本原理：对存放原始数据的数组，按从前往后的方向进行多次扫描，每次扫描称为一趟，当发现相邻的两个数据的次序与排序要求的大小次序不符合时，即将这两个数据进行交换。如果从小到大排序，这时，较小的数据就会逐个向前移动，好像气泡向上漂浮一样
        // 第一轮比较结束最大的数字就下沉到最后面，之后就不需要再比较
        // 第二轮比较结束次大的数字就下沉到倒数第二位，之后就不需要再比较
        // ...
        // 特点：升序排序中每一轮比较会把最大的数下沉到最低，所以相互比较的次数每一轮都会比前一轮少一次
        // 外层循环，控制趟数，每一次找到一个最大值
        for (let i = 0; i < arr.length - 1; i++) {
            // 内层循环,控制比较的次数，并且判断两个数的大小
            for (let j = 0; j < arr.length - 1 - i; j++) {
                // 比较与换位
                if (parseFloat(arr[j].name) > parseFloat(arr[j + 1].name)) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        console.log(arr);
        // 方法二：
        function order(array){
            array.forEach(element =>{
                let index = element.name.indexOf('小')
                let string = element.name.slice(0,index-1)
                element.number = Number(string)
            })
            // 返回值大于0，即a - b > 0,a和b交换位置
            // 返回值小于0，即a - b < 0,a和b位置不变
            // 返回值等于0，即a - b = 0,a和b位置不变
            array.sort((a,b)=>{
                return a.number - b.number
            })
            console.log(array);
        }
        // order(arr)
    </script>
</body>

</html>